function ntos(n){
n=n.toString(16);
if (n.length == 1) n="0"+n;
n="%"+n;
return unescape(n);
}

var digitArray = new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
function toHex(n){
var result = ''
var start = true;
for (var i=32; i>0;){
i-=4;
var digit = (n>>i) & 0xf;
if (!start || digit != 0){
start = false;
result += digitArray[digit];
}
}
return (result==''?'0':result);
}

function pad(str, len, pad){
var result = str;
for (var i=str.length; i<len; i++){
result = pad + result;
}
return result;
}

function encodeHex(str){
var result = "";
for (var i=0; i<str.length; i++){
result += pad(toHex(str.charCodeAt(i)&0xff),2,'0');
}
return result;
}

var hexv = {
"00":0,"01":1,"02":2,"03":3,"04":4,"05":5,"06":6,"07":7,"08":8,"09":9,"0A":10,"0B":11,"0C":12,"0D":13,"0E":14,"0F":15,
"10":16,"11":17,"12":18,"13":19,"14":20,"15":21,"16":22,"17":23,"18":24,"19":25,"1A":26,"1B":27,"1C":28,"1D":29,"1E":30,"1F":31,
"20":32,"21":33,"22":34,"23":35,"24":36,"25":37,"26":38,"27":39,"28":40,"29":41,"2A":42,"2B":43,"2C":44,"2D":45,"2E":46,"2F":47,
"30":48,"31":49,"32":50,"33":51,"34":52,"35":53,"36":54,"37":55,"38":56,"39":57,"3A":58,"3B":59,"3C":60,"3D":61,"3E":62,"3F":63,
"40":64,"41":65,"42":66,"43":67,"44":68,"45":69,"46":70,"47":71,"48":72,"49":73,"4A":74,"4B":75,"4C":76,"4D":77,"4E":78,"4F":79,
"50":80,"51":81,"52":82,"53":83,"54":84,"55":85,"56":86,"57":87,"58":88,"59":89,"5A":90,"5B":91,"5C":92,"5D":93,"5E":94,"5F":95,
"60":96,"61":97,"62":98,"63":99,"64":100,"65":101,"66":102,"67":103,"68":104,"69":105,"6A":106,"6B":107,"6C":108,"6D":109,"6E":110,"6F":111,
"70":112,"71":113,"72":114,"73":115,"74":116,"75":117,"76":118,"77":119,"78":120,"79":121,"7A":122,"7B":123,"7C":124,"7D":125,"7E":126,"7F":127,
"80":128,"81":129,"82":130,"83":131,"84":132,"85":133,"86":134,"87":135,"88":136,"89":137,"8A":138,"8B":139,"8C":140,"8D":141,"8E":142,"8F":143,
"90":144,"91":145,"92":146,"93":147,"94":148,"95":149,"96":150,"97":151,"98":152,"99":153,"9A":154,"9B":155,"9C":156,"9D":157,"9E":158,"9F":159,
"A0":160,"A1":161,"A2":162,"A3":163,"A4":164,"A5":165,"A6":166,"A7":167,"A8":168,"A9":169,"AA":170,"AB":171,"AC":172,"AD":173,"AE":174,"AF":175,
"B0":176,"B1":177,"B2":178,"B3":179,"B4":180,"B5":181,"B6":182,"B7":183,"B8":184,"B9":185,"BA":186,"BB":187,"BC":188,"BD":189,"BE":190,"BF":191,
"C0":192,"C1":193,"C2":194,"C3":195,"C4":196,"C5":197,"C6":198,"C7":199,"C8":200,"C9":201,"CA":202,"CB":203,"CC":204,"CD":205,"CE":206,"CF":207,
"D0":208,"D1":209,"D2":210,"D3":211,"D4":212,"D5":213,"D6":214,"D7":215,"D8":216,"D9":217,"DA":218,"DB":219,"DC":220,"DD":221,"DE":222,"DF":223,
"E0":224,"E1":225,"E2":226,"E3":227,"E4":228,"E5":229,"E6":230,"E7":231,"E8":232,"E9":233,"EA":234,"EB":235,"EC":236,"ED":237,"EE":238,"EF":239,
"F0":240,"F1":241,"F2":242,"F3":243,"F4":244,"F5":245,"F6":246,"F7":247,"F8":248,"F9":249,"FA":250,"FB":251,"FC":252,"FD":253,"FE":254,"FF":255
};

function decodeHex(str){
str = str.toUpperCase().replace(new RegExp("s/[^0-9A-Z]//g"));
var result = "";
var nextchar = "";
for (var i=0; i<str.length; i++){
nextchar += str.charAt(i);
if (nextchar.length == 2){
result += ntos(hexv[nextchar]);
nextchar = "";}
}
return result;
}

// TÆ°Æ¡ng tá»± hÃ m decodeHex(str), chá» thay Äá»i tÃªn hÃ m Äá» giáº¥u tÃªn 
function link3(str){
str = str.toUpperCase().replace(new RegExp("s/[^0-9A-Z]//g"));
var result = "";
var nextchar = "";
for (var i=0; i<str.length; i++){
nextchar += str.charAt(i);
if (nextchar.length == 2){
result += ntos(hexv[nextchar]);
nextchar = "";}
}
return result;
}

function encryptHex() {
document.getElementById("resulttext").innerHTML = "Káº¿t quáº£ MÃ£ hÃ³a:";
document.helloximoHex.T2Hex.value = encodeHex(document.helloximoHex.T1Hex.value);
return !1
}

function decryptHex() {
document.getElementById("resulttext").innerHTML = "Káº¿t quáº£ Giáº£i mÃ£:";
document.helloximoHex.T2Hex.value = decodeHex(document.helloximoHex.T1Hex.value);
return !1
}







/* CÃ¡c dáº¡ng Hex khÃ¡c tham kháº£o 1 */

function bin2hex(bin) { // UTF-8 string -> ASCII hex
    var hex = '';
    for (var i = 0; i < bin.length; i++) {
        var c = bin.charCodeAt(i);
        if (c > 0xFF) {c -= 0x350;} // UTF-8 -> ASCII
        hex += c.toString(16);
    }
    return hex;
};

function hex2bin(hex) { // ASCII hex-> UTF-8 string
    var bin = '';
    for (var i = 0; i < hex.length; i = i + 2) {
        var c = parseInt('' + hex[i] + hex[i + 1], 16);
        if (c > 0x7F) {c += 0x350;} // ASCII -> UTF-8
        bin += String.fromCharCode(c);
    }
    return bin;
};



/* CÃ¡c dáº¡ng Hex khÃ¡c tham kháº£o 2 */
function binStringToHex1(s) {
    var s2 = [];
    for (var i = 0, l = s.length; i < l; ++i)
    s2.push((s.charCodeAt(i) >> 4).toString(16), (s.charCodeAt(i) & 0xF).toString(16));
    String.prototype.concat.apply('', s2);
    return s2;
};

function binStringToHex2(s) {
    var s2 = new Array(s.length);
    for (var i = 0, l = s.length; i < l; ++i) {
        s2[i * 2] = (s.charCodeAt(i) >> 4).toString(16);
        s2[i * 2 + 1] = (s.charCodeAt(i) & 0xF).toString(16);
    }
    String.prototype.concat.apply('', s2);
    return s2;
};

function binStringToHex3(s) {
    var s2 = '';
    for (var i = 0, l = s.length; i < l; ++i) {
        s2 += (s.charCodeAt(i) >> 4).toString(16);
        s2 += (s.charCodeAt(i) & 0xF).toString(16);
    }
    return s2;
};

function binStringToHex4(s) {
    var s2 = '';
    for (var i = 0, l = s.length; i < l; ++i) {
        s2 += (s.charCodeAt(i) >> 4).toString(16) + (s.charCodeAt(i) & 0xF).toString(16);
    }
    return s2;
};


function convertString2Unicode(s) {
    var uniString = "", hexVal, uniChar;
    for(var i = 0; i < s.length; ++i) {
        hexVal = Number(s.charCodeAt(i)).toString(16);
        uniChar = "\\u" + ("000" + hexVal).match(/.{4}$/)[0];
        uniString += uniChar; }
    return uniString;
}
